package com.hisky.cms.menu.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.hisky.basic.util.Constant;
import com.hisky.cms.menu.dao.MenuDao;
import com.hisky.cms.menu.vo.Menu;

@Service
public class MenuService {
	@Autowired
	MenuDao menuDao;

	public int add(Menu menu) {
		menuDao.add(menu);
		menu.setOrderNo(menu.getMenuId());
		menuDao.update(menu);
		return menu.getMenuId();

	}

	public int update(Menu menu) {
		try {
			return menuDao.update(menu);
		} catch (Exception e) {
			throw new RuntimeException("更新失败");
		}
	}

	/**
	 * 根据菜单列表
	 * 
	 * @param menu
	 * @return
	 */
	public List<Menu> getList(Menu menu) {
		return menuDao.getList(menu);
	}

	public Menu get(int menuId) {
		return menuDao.get(menuId);
	}

	public int delete(int menuId) {
		try {
			Menu menu = menuDao.get(menuId);
			// TODO 删除前检查下面是否有文章，非空不能删除
			menu.setFlag(Constant.FLAG_DELETE);
			return menuDao.update(menu);
		} catch (Exception e) {
			throw new RuntimeException("更新失败");
		}
	}

	public int updateOrderNo(int menuId, String type) {
		try {
			if (type.equals("up")) {
				Menu menu = menuDao.get(menuId);
				Menu front = menuDao.getPrevious(menu);
				if (front == null)
					return -1;
				int temp = menu.getOrderNo();
				menu.setOrderNo(front.getOrderNo());
				front.setOrderNo(temp);
				menuDao.update(front);
				return menuDao.update(menu);
			} else {
				Menu menu = menuDao.get(menuId);
				Menu next = menuDao.getNext(menu);
				if (next == null)
					return -9;
				int temp = menu.getOrderNo();
				menu.setOrderNo(next.getOrderNo());
				next.setOrderNo(temp);
				menuDao.update(next);
				return menuDao.update(menu);
			}
		} catch (Exception e) {
			throw new RuntimeException("更新失败");
		}
	}
}
